package org.study.enums;

/**
 * 由于枚举类的实例是有限的且由JVM保证唯一性，因此枚举类是实现单例模式的最佳方式。Joshua Bloch在《Effective Java》中推荐使用枚举来实现单例，因为这种方式不仅能避免多线程同步问题，还能防止反序列化重新创建新的对象。
 * 参考 https://blog.csdn.net/MeyrlNotFound/article/details/147870300
 *
 * @author doveylovey
 * @version v1.0.0
 * @email 1135782208@qq.com
 * @date 2025年07月16日
 */
public class SingletonEnumTest {
    public static void main(String[] args) {
        Singleton singleton = Singleton.INSTANCE;
        singleton.setValue(42);
        System.out.println(singleton.getValue());
        singleton.doSomething();
    }

    public enum Singleton {
        INSTANCE;
        private int value;

        public int getValue() {
            return value;
        }

        public void setValue(int value) {
            this.value = value;
        }

        public void doSomething() {
            System.out.println("单例方法被调用");
        }
    }
}
